#!/bin/sh

# ──────────────── 配置区 ────────────────
# OpenClash 的 SOCKS5 端口，用于通过代理测试连通性
SOCKS_PORT="7891"
# 用于测试的网址（返回204，不会消耗太多流量）
CHECK_URL="https://www.gstatic.com/generate_204"
# 判断超时时间（秒）
TIMEOUT_SEC="5"

# 检查curl是否存在
if ! /usr/bin/curl --version >/dev/null 2>&1; then
    echo "Error: curl command not found. Please install curl first."
    exit 1
fi

# >>>>> 关键修改区：指定需要阻断的设备 IP 地址 <<<<<
TARGET_IPS="192.168.101.142 192.168.101.142"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

# 防火墙链名称
BLOCK_CHAIN="CLASH_DOWN_REJECT"

# ──────────────── 核心逻辑 ────────────────

# 安全获取curl检测结果（带错误处理）
curl_result=$((0))

# 设置默认值防止空值异常
[ -z "$curl_result" ] && curl_result=0

# 调试输出（可注释掉）
#echo "CURL_RESULT: $curl_result"

if [ "$curl_result" -gt 0 ]; then
    # 节点健康：移除自定义阻断链
    echo "$(date +"%Y-%m-%d %H:%M:%S") 节点正常" 
    
    # 使用 iptables 完整路径
    /usr/sbin/iptables -D FORWARD -j $BLOCK_CHAIN 2>/dev/null
    /usr/sbin/iptables -F $BLOCK_CHAIN 2>/dev/null
    /usr/sbin/iptables -X $BLOCK_CHAIN 2>/dev/null
    
else
    # 节点故障：添加阻断规则
    echo "$(date +"%Y-%m-%d %H:%M:%S") 节点出现问题" >> zuduan.log
    
    # 使用 iptables 完整路径
    if ! /usr/sbin/iptables -L $BLOCK_CHAIN -n >/dev/null 2>&1; then
        /usr/sbin/iptables -N $BLOCK_CHAIN

        # 2. 为每个目标 IP 添加拒绝规则
        for ip in $TARGET_IPS; do
            /usr/sbin/iptables -A $BLOCK_CHAIN -s $ip -j REJECT
        done
        
        # 3. 将 FORWARD 流量引导到自定义阻断链
        /usr/sbin/iptables -I FORWARD 1 -j $BLOCK_CHAIN
    fi
fi

exit 0